package com.ruoyi.hk.service;

import com.ruoyi.hk.domain.vo.DocMessageVo;
import com.ruoyi.hk.domain.vo.UserConversationVO;

import java.util.List;

public interface DocMessageService {
    /**
     * 获取聊天历史
     */
    List<DocMessageVo> getChatHistory(Long userId, Long targetId);

    /**
     * 发送消息
     */
    DocMessageVo sendMessage(Long senderId, Long receiverId, String content, Integer messageType);

    /**
     * 获取用户的所有会话列表（包含未读消息数）
     */
    List<DocMessageVo> getUserConversations(Long userId);

    /**
     * 获取用户的所有会话列表（包含完整的用户信息）
     */
    List<UserConversationVO> getUserConversationsWithUserInfo(Long userId);

    /**
     * 获取所有其他用户列表（用于聊天选择）
     */
    List<UserConversationVO> getAllOtherUsers(Long userId);

    /**
     * 根据用户角色获取聊天用户列表
     * 管理员：显示所有用户
     * 普通用户：显示家庭成员和签约团队医生，以及管理员
     * 医生：显示团队成员和签约家庭用户，以及管理员
     */
    List<UserConversationVO> getChatUserList(Long userId);

    /**
     * 标记消息为已读
     */
    void markMessagesAsRead(Long userId, Long targetId);

    /**
     * 获取与指定用户的未读消息数
     */
    Integer getUnreadCount(Long userId, Long targetId);
}
